<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    // Generator 与状态机

    // Generator是实现状态机的最佳结构 比如下面的 clock函数


    var ticking = true;
    var clock1 = function() {
        if (ticking)
            console.log('Tick!');
        else
            console.log('Tock!');
        ticking = !ticking;
    }

    clock1() // Tick
    clock1() // Tock
    clock1() // Tick


    console.log('========================')

    // 上面代码的clock函数共有两种状态 (Tick 和 Tock)
    // 每运行一次就改变一次状态 
    // 这个函数的Generator实现如下

    var clock2 = function* () {
        while (true) {
            console.log('Tick!');
            yield;
            console.log('Tock!');
            yield;
        }
    };

    const gen = clock2();
    gen.next() // Tick
    gen.next() // Tock
    gen.next() // Tick


    


</script>